if ( !GUEST_MODE(regs) )
goto xen_fault;
-#ifndef NDEBUG
- if ( (ed->arch.guest_context.trap_ctxt[trapnr].address == 0) &&
- (ed->domain->domain_id == 0) )
- goto xen_fault;
-#endif
-
ti = ¤t->arch.guest_context.trap_ctxt[trapnr];
tb->flags = TBF_EXCEPTION;
tb->cs = ti->cs;
if ( !GUEST_MODE(regs) )
goto xen_fault;
-#ifndef NDEBUG
- if ( (ed->arch.guest_context.trap_ctxt[TRAP_page_fault].address == 0) &&
- (d->domain_id == 0) )
- goto xen_fault;
-#endif
-
propagate_page_fault(addr, regs->error_code);
return 0;
return 0;
#endif
-#ifndef NDEBUG
- if ( (ed->arch.guest_context.trap_ctxt[TRAP_gp_fault].address == 0) &&
- (ed->domain->domain_id == 0) )
- goto gp_in_kernel;
-#endif
-
/* Pass on GPF as is. */
ti = ¤t->arch.guest_context.trap_ctxt[TRAP_gp_fault];
tb->flags = TBF_EXCEPTION | TBF_EXCEPTION_ERRCODE;
movb TRAPBOUNCE_flags(%edx),%cl
subl $12,%esi
movl UREGS_eip+4(%esp),%eax
+ test %eax,%eax
+ jz domain_crash_synchronous
FLT14: movl %eax,%gs:(%esi)
movl EDOMAIN_vcpu_info(%ebx),%eax
pushl VCPUINFO_upcall_mask(%eax)
movw UREGS_cs+8(%rsp),%ax # Bits 0-15: CS
FLT5: movq %rax,8(%rsi) # CS/saved_upcall_mask
movq UREGS_rip+8(%rsp),%rax
+ testq %rax,%rax
+ jz domain_crash_synchronous
FLT6: movq %rax,(%rsi) # RIP
testb $TBF_EXCEPTION_ERRCODE,%cl
jz 1f